#include<bits/stdc++.h>
using namespace std;
typedef  long long ll;
const int N=1e5+10;
int a[N],cnt[N];
map<int,int>mp;
int main(){
    freopen("duel.in","r",stdin);
    freopen("duel.out","w",stdout);
    int n;
    scanf("%d",&n);

    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        mp[a[i]]++;
    }
    int x=0;
    for(auto it:mp){
        cnt[++x]=it.second;
    }
    sort(cnt+1,cnt+x+1);
    int ans=0;
    int l=1,r=x;
    for(int i=1;i<=x;i++)cout<<cnt[i]<<' ';
    cout<<endl;
    while(l<r-1){
        while(cnt[l]==0){
            if(l>=r)break;
            l++;
        }
        int a=cnt[l];
        for(int i=l;i<=x;i++)cnt[i]-=a;
        ans++;
        for(int i=1;i<=x;i++)cout<<cnt[i]<<' ';
        cout<<endl;
    }
    ans+=cnt[x];
    printf("%d",ans);
    return 0;
}
